/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.tbp.gui.table;

import br.com.tbp.model.domain.financeiro.AjudaCusto;
import br.com.tbp.utils.DateUtils;
import java.text.DateFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.List;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author Diego
 */
public class AjudaCustoTableModel extends AbstractTableModel {

    private List<AjudaCusto> itensList;
    DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
    NumberFormat numberFormat = NumberFormat.getCurrencyInstance();

    public AjudaCustoTableModel(List<AjudaCusto> itensList) {
        this.itensList = itensList;
    }

    public int getRowCount() {
        return itensList.size();
    }

    public int getColumnCount() {
        return 9;
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        switch (columnIndex) {
            case 0:
                return Long.class;
            case 1:
            case 2:
            case 3:
                return String.class;
            case 4:
            case 5:
                return Integer.class;
            case 6:
            case 7:
            case 8:
                return String.class;
        }
        return Object.class;
    }

    @Override
    public String getColumnName(int column) {
        switch (column) {
            case 0:
                return "Código";
            case 1:
                return "Consultor";
            case 2:
                return "Data";
            case 3:
                return "Valor";
            case 4:
                return "Acessos Requisitados";
            case 5:
                return "Fechamento";
            case 6:
                return "Acessos Restantes";
            case 7:
                return "Status";
            case 8:
                return "Data Fechamento";
        }
        return null;
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false;
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        AjudaCusto ajuda = getAjudaCusto(rowIndex);
        if (ajuda != null) {
            switch (columnIndex) {
                case 0:
                    return ajuda.getId();
                case 1:
                    return ajuda.getConsultor().toString2();
                case 2:
                    return DateUtils.dataObjetoParaString(ajuda.getDataLiberacao());
                case 3:
                    return numberFormat.format(ajuda.getValor());
                case 4:
                    return ajuda.getAcessos();
                case 5:
                    return ajuda.getFechamento();
                case 6:
                    return ajuda.getAcessosRestantes();
                case 7:
                    return ajuda.getStatus().name();
                case 8:
                    return DateUtils.dataObjetoParaString(ajuda.getDataFechamento());
            }
        }
        return null;
    }

    public AjudaCusto getAjudaCusto(int row) {
        if (row >= 0) {
            return itensList.get(row);
        }
        return null;
    }

    public void removerAjudaCusto(AjudaCusto ajuda) {
        if (itensList.contains(ajuda)) {
            itensList.remove(ajuda);
            fireTableDataChanged();
        }
    }
}
